package rss_GUI;

import java.awt.Component;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import javax.persistence.EntityManager;
import javax.swing.DefaultListSelectionModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.ListSelectionModel;
import javax.swing.JTable;
import java.util.Date;
import javax.swing.JLabel;

import rss_CODE.RadioStationSystem;
import rss_POJO.*;

/**
 *
 * @author RS-team
 */
public class MainMenu extends javax.swing.JFrame {

    private static final String dateRenderer = "EEE d MMM y";  // πρότυπο ημερομηνίας για εμφάνιση ή έλεγχο στις φόρμες
    private static final String datetimeRenderer = "EEE d MMM y, hh:mm aa";  // πρότυπο ημερομηνίας & ώρας για εμφάνιση ή έλεγχο στις φόρμες

    private final RadioStationSystem rss;
    private final EntityManager em;

    private final String frameTitle;

    private Boolean expertMode;
    private Help h;
    
    /* χρήσιμοι getters για RadioStationSystem και EntityManager */
    public RadioStationSystem getRSS() { return rss; }
    public EntityManager getEM() { return em; }
    
    /* getter και setter για το expertMode */
    public Boolean getExpertMode() { return expertMode; }
    public void setExpertMode(Boolean expertMode) { this.expertMode = expertMode; }

    
    /* overrides τον κλασικό τρόπο επιλογής περιεχομένων jTable σε επιλογή μίας μόνο γραμμής */
    // usage: drag&drop class ή στο post-preation code του πίνακα προσθέτω [jTable name].setSelectionModel(new ForcedListSelectionModel());
    public static class ForcedListSelectionModel extends DefaultListSelectionModel {
        //@Override
        //public void clearSelection() { }
        
        //@Override
        //public void removeSelectionInterval(int index0, int index1) { }
        
        public ForcedListSelectionModel () {
            setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        }
    }

    /* overrides τον default τρόπο rendering σε κελί πίνακα με περιεχόμενο Integer που αντιστοιχεί στο φύλο */
    // usage: drag&drop class ή στον default renderer του πίνακα προσθέτω ως custom code το new SexCellRenderer()
    public static class SexCellRenderer extends DefaultTableCellRenderer {
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            if((value != null) && (value instanceof Integer)) {
                this.setText((Integer) value == 0? "+" : "^");
            }
            setHorizontalAlignment(JLabel.CENTER);  // και τέλος μία στοίχιση στο κέντρο
            return this;
        }
    }

    /* overrides τον default τρόπο rendering σε κελί πίνακα με περιεχόμενο Integer που αντιστοιχεί σε χρονική διάρκεια */
    // usage: drag&drop class ή στον default renderer του πίνακα προσθέτω ως custom code το new TimeDurationCellRenderer()
    public static class TimeDurationCellRenderer extends DefaultTableCellRenderer {
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            if((value != null) && (value instanceof Integer)) {
                int hours = ((Integer) value)/3600;
                int minutes = (((Integer) value)%3600)/60;
                int seconds = (((Integer) value)%3600)%60;
                this.setText((hours>0? (String.valueOf(hours) + ":") : "") + 
                                        new DecimalFormat("00").format(minutes) + ":" +
                                        new DecimalFormat("00").format(seconds) + " ");
            }
            setHorizontalAlignment(JLabel.RIGHT);  // και τέλος μία δεξιά στοίχιση
            return this;
        }
    }

    /* overrides τον default τρόπο rendering σε κελί πίνακα με περιεχόμενο Date κατά το δοθέν πρότυπο */
    // usage: drag&drop class ή στον default renderer του πίνακα προσθέτω ως custom code το new DateCellRenderer()
    public static class DateCellRenderer extends DefaultTableCellRenderer {
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            if((value != null) && (value instanceof Date)) {
                this.setText( new SimpleDateFormat(dateRenderer).format((Date) value));
            }
            return this;
        }
    }

    /* overrides τον default τρόπο rendering σε κελί πίνακα με περιεχόμενο DateTime κατά το δοθέν πρότυπο */
    // usage: drag&drop class ή στον default renderer του πίνακα προσθέτω ως custom code το new DateTimeCellRenderer()
    public static class DateTimeCellRenderer extends DefaultTableCellRenderer {
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            if((value != null) && (value instanceof Date)) {
                this.setText( new SimpleDateFormat(datetimeRenderer).format((Date) value));
            }
            return this;
        }
    }

    /* overrides τον default τρόπο rendering σε κελί πίνακα με περιεχόμενο AlbumId που αντιστοιχεί στο φύλο */
    // usage: drag&drop class ή στον default renderer του πίνακα προσθέτω ως custom code το new AlbumIDCellRenderer()
    public static class AlbumIDCellRenderer extends DefaultTableCellRenderer {
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            if((value != null) && (value instanceof Album)) {
                if(((Album) value).getArtistId() != null && ((Album) value).getMusicgroupId() == null) 
                    this.setText(((Album) value).getArtistId().getArtisticname());
                if(((Album) value).getMusicgroupId() != null && ((Album) value).getArtistId() == null) 
                    this.setText(((Album) value).getMusicgroupId().getName());
            }
            return this;
        }
    }

    /* overrides τον έλεγχο mouse clicks στο header ενός πίνακα ώστε να φαίνεται πάντα στο viewport η επιλεγμένη γραμμή */
    // usage: drag&drop class ή στο post-preation code του πίνακα προσθέτω [jTable name].getTableHeader().addMouseListener(new TableHeaderMouseListener([jTable name]));
    public static class TableHeaderMouseListener extends MouseAdapter {
        private JTable table;
     
        public TableHeaderMouseListener(JTable table) { this.table = table; }

        @Override
        public void mouseClicked(MouseEvent event) {
            // εμφάνιση viewport που να περιέχει την επιλεγμένη γραμμή και επικαιροποίηση του πίνακα
            table.scrollRectToVisible(table.getCellRect(table.getSelectedRow(), 0, true));
            table.repaint();
        }
    }
    
    
    /**
     * Creates new form MainMenu
     */
    public MainMenu(RadioStationSystem rss) {
        this.rss = rss;
        this.em = rss.getEM();
        this.expertMode = false;
        initComponents();
        this.frameTitle = this.getTitle();
    }

    /* οριστικό κλείσιμο του EntityManager em αγνοώντας πιθανά Exceptions */
    private Boolean closeDB() {
        try {
            em.close(); return true;
        } catch(Exception e) { return false; /* τίποτα άλλο, έτσι κι αλλιώς πάμε για κλείσιμο */ }
    }

    
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabelRSTEAM = new javax.swing.JLabel();
        jLabelRSSLOGO = new javax.swing.JLabel();
        jSeparatorLINE = new javax.swing.JSeparator();
        jLabelBACKGROUND = new javax.swing.JLabel();
        jLabelFRAMEPOSITION = new javax.swing.JLabel();
        jLabelHELPPOSITION = new javax.swing.JLabel();
        jMenuBarBAR = new javax.swing.JMenuBar();
        jMenuMENU = new javax.swing.JMenu();
        jMenuItemMENU_LISTS = new javax.swing.JMenuItem();
        jMenuMENU_FILES = new javax.swing.JMenu();
        jMenuItemMENU_FILES_ARTISTS = new javax.swing.JMenuItem();
        jMenuItemMENU_FILES_GROUPS = new javax.swing.JMenuItem();
        jMenuMENU_FILES_ALBUM = new javax.swing.JMenu();
        jMenuItemMEMU_FILES_ALBUM_ARTISTS = new javax.swing.JMenuItem();
        jMenuItemMENU_FILES_ALBUM_GROUPS = new javax.swing.JMenuItem();
        jMenuItemMENU_EXIT = new javax.swing.JMenuItem();
        jMenuHELP = new javax.swing.JMenu();
        jMenuItemHELP_ABOUT = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("RADIO STATION SYSTEM - Κεντρικό Μενού");
        setLocationByPlatform(true);
        setMinimumSize(new java.awt.Dimension(806, 626));
        setName("MAINMENU"); // NOI18N
        setResizable(false);
        addWindowFocusListener(new java.awt.event.WindowFocusListener() {
            public void windowGainedFocus(java.awt.event.WindowEvent evt) {
                formWindowGainedFocus(evt);
            }
            public void windowLostFocus(java.awt.event.WindowEvent evt) {
            }
        });
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosed(java.awt.event.WindowEvent evt) {
                formWindowClosed(evt);
            }
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });
        getContentPane().setLayout(null);

        jLabelRSTEAM.setIcon(new javax.swing.ImageIcon(getClass().getResource("/misc/design/RSTeam_maxi.png"))); // NOI18N
        jLabelRSTEAM.setFocusable(false);
        getContentPane().add(jLabelRSTEAM);
        jLabelRSTEAM.setBounds(516, 533, 284, 43);

        jLabelRSSLOGO.setIcon(new javax.swing.ImageIcon(getClass().getResource("/misc/design/RSS-Logo_maxi.png"))); // NOI18N
        jLabelRSSLOGO.setFocusable(false);
        getContentPane().add(jLabelRSSLOGO);
        jLabelRSSLOGO.setBounds(20, 20, 180, 152);

        jSeparatorLINE.setMinimumSize(new java.awt.Dimension(780, 2));
        getContentPane().add(jSeparatorLINE);
        jSeparatorLINE.setBounds(10, 534, 780, 2);

        jLabelBACKGROUND.setIcon(new javax.swing.ImageIcon(getClass().getResource("/misc/design/MICROPHONE_maxi.png"))); // NOI18N
        jLabelBACKGROUND.setFocusable(false);
        getContentPane().add(jLabelBACKGROUND);
        jLabelBACKGROUND.setBounds(0, 0, 800, 576);
        getContentPane().add(jLabelFRAMEPOSITION);
        jLabelFRAMEPOSITION.setBounds(310, 202, 20, 20);
        getContentPane().add(jLabelHELPPOSITION);
        jLabelHELPPOSITION.setBounds(570, 365, 20, 20);

        jMenuBarBAR.setAlignmentX(0.0F);

        jMenuMENU.setText("  Μενού");
        jMenuMENU.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        jMenuMENU.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuMENUActionPerformed(evt);
            }
        });

        jMenuItemMENU_LISTS.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        jMenuItemMENU_LISTS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/misc/design/_Song.png"))); // NOI18N
        jMenuItemMENU_LISTS.setText("Λίστες τραγουδιών");
        jMenuItemMENU_LISTS.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemMENU_LISTSActionPerformed(evt);
            }
        });
        jMenuMENU.add(jMenuItemMENU_LISTS);

        jMenuMENU_FILES.setIcon(new javax.swing.ImageIcon(getClass().getResource("/misc/design/_Files.png"))); // NOI18N
        jMenuMENU_FILES.setText("Διαχείριση αρχείων");
        jMenuMENU_FILES.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        jMenuMENU_FILES.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuMENU_FILESActionPerformed(evt);
            }
        });

        jMenuItemMENU_FILES_ARTISTS.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        jMenuItemMENU_FILES_ARTISTS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/misc/design/_Artist.png"))); // NOI18N
        jMenuItemMENU_FILES_ARTISTS.setText("Καλλιτέχνες");
        jMenuItemMENU_FILES_ARTISTS.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemMENU_FILES_ARTISTSActionPerformed(evt);
            }
        });
        jMenuMENU_FILES.add(jMenuItemMENU_FILES_ARTISTS);

        jMenuItemMENU_FILES_GROUPS.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        jMenuItemMENU_FILES_GROUPS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/misc/design/_Group.png"))); // NOI18N
        jMenuItemMENU_FILES_GROUPS.setText("Συγκροτήματα");
        jMenuItemMENU_FILES_GROUPS.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemMENU_FILES_GROUPSActionPerformed(evt);
            }
        });
        jMenuMENU_FILES.add(jMenuItemMENU_FILES_GROUPS);

        jMenuMENU_FILES_ALBUM.setIcon(new javax.swing.ImageIcon(getClass().getResource("/misc/design/_Album.png"))); // NOI18N
        jMenuMENU_FILES_ALBUM.setText("Διαχείριση Άλμπουμ");
        jMenuMENU_FILES_ALBUM.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N

        jMenuItemMEMU_FILES_ALBUM_ARTISTS.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        jMenuItemMEMU_FILES_ALBUM_ARTISTS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/misc/design/_Artist.png"))); // NOI18N
        jMenuItemMEMU_FILES_ALBUM_ARTISTS.setText("Άλμπουμ Καλλιτεχνών");
        jMenuItemMEMU_FILES_ALBUM_ARTISTS.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemMEMU_FILES_ALBUM_ARTISTSActionPerformed(evt);
            }
        });
        jMenuMENU_FILES_ALBUM.add(jMenuItemMEMU_FILES_ALBUM_ARTISTS);

        jMenuItemMENU_FILES_ALBUM_GROUPS.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        jMenuItemMENU_FILES_ALBUM_GROUPS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/misc/design/_Group.png"))); // NOI18N
        jMenuItemMENU_FILES_ALBUM_GROUPS.setText("Άλμπουμ Συγκροτημάτων");
        jMenuItemMENU_FILES_ALBUM_GROUPS.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemMENU_FILES_ALBUM_GROUPSActionPerformed(evt);
            }
        });
        jMenuMENU_FILES_ALBUM.add(jMenuItemMENU_FILES_ALBUM_GROUPS);

        jMenuMENU_FILES.add(jMenuMENU_FILES_ALBUM);

        jMenuMENU.add(jMenuMENU_FILES);

        jMenuItemMENU_EXIT.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        jMenuItemMENU_EXIT.setIcon(new javax.swing.ImageIcon(getClass().getResource("/misc/design/_Home.png"))); // NOI18N
        jMenuItemMENU_EXIT.setText("Έξοδος");
        jMenuItemMENU_EXIT.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemMENU_EXITActionPerformed(evt);
            }
        });
        jMenuMENU.add(jMenuItemMENU_EXIT);

        jMenuBarBAR.add(jMenuMENU);

        jMenuHELP.setText("  Βοήθεια ");
        jMenuHELP.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        jMenuHELP.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuHELPActionPerformed(evt);
            }
        });

        jMenuItemHELP_ABOUT.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        jMenuItemHELP_ABOUT.setIcon(new javax.swing.ImageIcon(getClass().getResource("/misc/design/_About.png"))); // NOI18N
        jMenuItemHELP_ABOUT.setText("Πληροφορίες για το RADIO STATION SYSTEM");
        jMenuItemHELP_ABOUT.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemHELP_ABOUTActionPerformed(evt);
            }
        });
        jMenuHELP.add(jMenuItemHELP_ABOUT);

        jMenuBarBAR.add(jMenuHELP);

        setJMenuBar(jMenuBarBAR);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jMenuItemHELP_ABOUTActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemHELP_ABOUTActionPerformed
        if(h == null) h = new Help(this);  // δημιουργία αντικειμένου h τύπου Help
        h.setLocationRelativeTo(jLabelHELPPOSITION);
        h.setVisible(true);  // και το εμφανίζουμε
        h.toFront();
    }//GEN-LAST:event_jMenuItemHELP_ABOUTActionPerformed

    private void jMenuMENUActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuMENUActionPerformed
       
    }//GEN-LAST:event_jMenuMENUActionPerformed

    private void jMenuHELPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuHELPActionPerformed
        
    }//GEN-LAST:event_jMenuHELPActionPerformed

    private void jMenuItemMENU_EXITActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemMENU_EXITActionPerformed
        dispose(); // έξοδος από την MainMenu
    }//GEN-LAST:event_jMenuItemMENU_EXITActionPerformed

    private void jMenuMENU_FILESActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuMENU_FILESActionPerformed

    }//GEN-LAST:event_jMenuMENU_FILESActionPerformed

    private void jMenuItemMEMU_FILES_ALBUM_ARTISTSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemMEMU_FILES_ALBUM_ARTISTSActionPerformed
        AlbumManagement aam = new AlbumManagement(this, false);  // άνοιγμα Jframe AlbumManagement με false flag για Artists
        setEnabled(false);  // απενεργοποιούμε την Μain Menu
        aam.setLocationRelativeTo(jLabelFRAMEPOSITION);
        aam.setVisible(true);  // και το εμφανίζουμε
        aam.toFront();
    }//GEN-LAST:event_jMenuItemMEMU_FILES_ALBUM_ARTISTSActionPerformed

    private void jMenuItemMENU_FILES_GROUPSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemMENU_FILES_GROUPSActionPerformed
        GroupManagement gm = new GroupManagement(this);  // άνοιγμα Jframe GroupManagement
        setEnabled(false);  // απενεργοποιούμε την Μain Menu
        gm.setLocationRelativeTo(jLabelFRAMEPOSITION);
        gm.setVisible(true);  // και το εμφανίζουμε
        gm.toFront();
    }//GEN-LAST:event_jMenuItemMENU_FILES_GROUPSActionPerformed

    private void jMenuItemMENU_FILES_ARTISTSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemMENU_FILES_ARTISTSActionPerformed
        ArtistManagement am = new ArtistManagement(this);  // άνοιγμα Jframe ArtistManagement
        setEnabled(false);  // απενεργοποιούμε την Μain Menu
        am.setLocationRelativeTo(jLabelFRAMEPOSITION);
        am.setVisible(true);  // και το εμφανίζουμε
        am.toFront();
    }//GEN-LAST:event_jMenuItemMENU_FILES_ARTISTSActionPerformed

    private void jMenuItemMENU_LISTSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemMENU_LISTSActionPerformed
        PlayListManagement mlm = new PlayListManagement(this);  // άνοιγμα Jframe PlayListManagement
        setEnabled(false);  // απενεργοποιούμε την Μain Menu
        mlm.setLocationRelativeTo(jLabelFRAMEPOSITION);
        mlm.setVisible(true);  // και το εμφανίζουμε
        mlm.toFront();
    }//GEN-LAST:event_jMenuItemMENU_LISTSActionPerformed

    private void jMenuItemMENU_FILES_ALBUM_GROUPSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemMENU_FILES_ALBUM_GROUPSActionPerformed
        AlbumManagement gam = new AlbumManagement(this, true);  // άνοιγμα Jframe AlbumManagement με true flag για Groups
        setEnabled(false);  // απενεργοποιούμε την Μain Menu
        gam.setLocationRelativeTo(jLabelFRAMEPOSITION);
        gam.setVisible(true);  // και το εμφανίζουμε
        gam.toFront();
    }//GEN-LAST:event_jMenuItemMENU_FILES_ALBUM_GROUPSActionPerformed

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        System.exit(closeDB()? 0 : 6);  // έξοδος με X στο Jframe, κλείσιμο EntityManager και errorlevel 0 ή 6 αν δεν έκλεισε σωστά η ΒΔ
    }//GEN-LAST:event_formWindowClosing

    private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
        System.exit(closeDB()? 0 : 6);  // κανονική έξοδος, κλείσιμο EntityManager και errorlevel 0 ή 6 αν δεν έκλεισε σωστά η ΒΔ
    }//GEN-LAST:event_formWindowClosed

    private void formWindowGainedFocus(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowGainedFocus
        if(expertMode) this.setTitle(frameTitle + " (ExpertMode)");
        else this.setTitle(frameTitle);
    }//GEN-LAST:event_formWindowGainedFocus

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel jLabelBACKGROUND;
    private javax.swing.JLabel jLabelFRAMEPOSITION;
    private javax.swing.JLabel jLabelHELPPOSITION;
    private javax.swing.JLabel jLabelRSSLOGO;
    private javax.swing.JLabel jLabelRSTEAM;
    private javax.swing.JMenuBar jMenuBarBAR;
    private javax.swing.JMenu jMenuHELP;
    private javax.swing.JMenuItem jMenuItemHELP_ABOUT;
    private javax.swing.JMenuItem jMenuItemMEMU_FILES_ALBUM_ARTISTS;
    private javax.swing.JMenuItem jMenuItemMENU_EXIT;
    private javax.swing.JMenuItem jMenuItemMENU_FILES_ALBUM_GROUPS;
    private javax.swing.JMenuItem jMenuItemMENU_FILES_ARTISTS;
    private javax.swing.JMenuItem jMenuItemMENU_FILES_GROUPS;
    private javax.swing.JMenuItem jMenuItemMENU_LISTS;
    private javax.swing.JMenu jMenuMENU;
    private javax.swing.JMenu jMenuMENU_FILES;
    private javax.swing.JMenu jMenuMENU_FILES_ALBUM;
    private javax.swing.JSeparator jSeparatorLINE;
    // End of variables declaration//GEN-END:variables
}